/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.text;

import ksvg.core.SVGComponentBase;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.component.painting._FillProperties;
import tk.eigh.ksvg.component.painting._StrokeProperties;

/**
 *
 * @author nt
 */
@JSFComponent(name = "svg:GlyphRef",
type = "tk.eigh.svg.GlyphRef",
family = "text.GlyphRef",
clazz = "ksvg.text.GlyphRef",
tagClass = "ksvg.text.tags.GlyphRefTag",
defaultRendererType = "SVGGlyphRefRenderer",
desc = "The ‘glyphRef’ element defines a possible glyph to use.")
public abstract class AbstractGlyphRef extends SVGComponentBase implements
        _FontProperties, _TextContentProperties, _FillProperties, _StrokeProperties {

    /**
     * x = "&lt;number&gt;"
     *<br/>
     * This value represents the new absolute X coordinate within the font's
     * coordinate system for this glyph. The font coordinate system is based on
     * the em square model described in the Fonts chapter of CSS2
     * ([<a href="http://www.w3.org/TR/SVG/refs.html#ref-CSS2">CSS2<a/>], chapter 15). If the
     * attribute is not specified, for the first ‘glyphRef’ child element, the
     * effect is as if the attribute were set to "0", whereas for subsequent
     * ‘glyphRef’ child elements, the effect is as if the attribute were set to
     * the end X coordinate from the previous ‘glyphRef’ element.
     *<br/>
     * Animatable: no.
     */
    @JSFProperty
    public abstract String getX();

    /**
     * y = "&lt;number&gt;"
     *<br/>
     * The corresponding new absolute Y coordinate within the font's coordinate
     * system for this glyph.
     *<br/>
     * Animatable: no.
     */
    @JSFProperty
    public abstract String getY();

    /**
     * dx = "&lt;number&gt;"
     *<br/>
     * This value represents the relative X coordinate within the font's
     * coordinate system for this glyph. The glyph is thus shifted by &lt;number&gt;
     * units along the positive X axis within the font's coordinate system
     * supplemental to the absolute X coordinate established by the ‘x’
     * attribute (either due to an explicit ‘x’ attribute or due to default
     * value processing for the ‘x’ attribute). The font coordinate system is
     * based on the em square model described in the Fonts chapter of CSS2
     * ([CSS2], chapter 15). If the attribute is not specified, the effect is as
     * if the attribute were set to "0".
     *<br/>
     * Animatable: no.
     */
    @JSFProperty
    public abstract String getDx();

    /**
     * dy = "&lt;number&gt;"
     *<br/>
     * The corresponding number of units within the font's coordinate system to
     * shift the glyph along the positive Y axis relative to the absolute Y
     * coordinate established by the ‘y’ attribute.
     *<br/>
     * Animatable: no.
     */
    @JSFProperty
    public abstract String getDy();

    /**
     * glyphRef = "&lt;string&gt;"
     *<br/>
     * The glyph identifier, the format of which is dependent on the ‘format’ of
     * the given font.
     *<br/>
     * Animatable: no.
     */
    @JSFProperty
    public abstract String getGlyphRef();

    /**
     * format = "&lt;string&gt;"
     *<br/>
     * The format of the given font. If the font is in one of the formats listed
     * in CSS2 ([<a href="http://www.w3.org/TR/SVG/refs.html#ref-CSS2">CSS2<a/>], section 15.3.5),
     * such as TrueDoc™ Portable Font Resource or Embedded OpenType, then the
     * &lt;string&gt; must contain the corresponding font format string, such as
     * truedoc-pfr or embedded-opentype.
     *<br/>
     * Animatable: no.
     */
    @JSFProperty
    public abstract String getFormat();

    /**
     * This attribute specifies style information for the current element. The
     * style attribute specifies style information for a single element. The
     * style sheet language of inline style rules is given by the value of
     * attribute ‘contentStyleType’ on the ‘svg’ element. The syntax of style
     * data depends on the style sheet language.
     */
    @JSFProperty
    public abstract String getStyle();

    /**
     * This attribute assigns a class name or set of class names to an element.
     * Any number of elements may be assigned the same class name or names.
     * Multiple class names must be separated by white space characters.
     */
    @JSFProperty
    public abstract String getStyleClass();

    /**
     * xlink:href = "&lt;iri&gt;"
     *<br/>
     * An IRI reference to an element whose character data content shall be used
     * as character data for this ‘tref’ element.
     *<br/>
     *<br/>
     * Animatable: yes.
     */
    @JSFProperty(required = true)
    public abstract String getFor();
}